#include <stdio.h>


// //接受一个整数，按顺序打印它的每一位
// void print(unsigned int a)
// {
//     if (a >9)
//     {
//         print(a / 10);
//     }
//     printf("%d ",a % 10);
// }
// int main()
// {
//     unsigned int num = 0;
//     scanf("%u",&num);
//     //递归思想
//     //print （1234）
//     //print （123） 4
//     //print （12） 3 4
//     //print （1） 2 3 4
//     print(num);
// }





// 不创建临时变量的情况下，写一个求字符串长度的函数

// 若允许创建临时变量
// int my_strlen(char* str)
// {
//     int count = 0;//此处count即是临时变量
//     while(*str != '\0')
//     {
//         count ++;
//         str ++;//指针后移一个单位（字节）
//     }
//     return count;
// }
// int main()
// {
//     char arr[]="abc";
//     int len = my_strlen(arr);
//     printf("%d\n",len);
// }

// //不允许创建临时变量，考虑采用递归的方法
// int my_strlen(char* str)
// {
//     if (*str != '\0')
//         return 1 + my_strlen(str+1);
//     else 
//         return 0;
// }
// int main()
// {
//     char arr[]="abc";
//     int len = my_strlen(arr);
//     printf("%d\n",len);
// }




// //可一个函数计算n的阶乘 factorial
// int fac(int n)
// {
//     if(n == 1)
//     return 1;
//     else
//     return n * fac(n-1);
// }
// int main()
// {
//     int n = 0;
//     scanf("%d",&n);
//     int ret = fac(n);
//     printf("%d\n",ret);
//     return 0;
// }





// //求第n个斐波那契数
// // 斐波那契数列：1，1，2，3，5，8，13，21，34，55。。
// //不是所有程序都是递归计算更好用，对于本例子，当求一个较大的数时，前面的数会重复算很多遍，指数量级
// //递归
// int fib(int n)
// {
//     if (n <= 2)
//     return 1;
//     else
//     return fib(n-1)+fib(n-2);
// }
// int main()
// {
//     int n = 0;
//     scanf("%d",&n);
//     int ret = fib(n);
//     printf("%d\n",ret);
//     return 0;
// }

//迭代
int fib(int n)
{
    int i = 0;
    int a = 1;
    int b = 1;
    int c = 1;
    if(n >= 2)
    {
        for(i = 2;i < n; i++)
        {
            c = a + b;
            a = b;
            b = c;
        }
    }
    return c;
}
int main()
{
    int n = 0;
    scanf("%d",&n);
    int ret = fib(n);
    printf("%d\n",ret);
    return 0;
}